package com.nio.c1_NettyTest;



import lombok.extern.slf4j.Slf4j;

import java.nio.ByteBuffer;

@Slf4j
public class ByteBufferReadTest {
    public static void main(String[] args) {

        // 数据缓冲区 分配 区域
        ByteBuffer byteBuffer = ByteBuffer.allocate(10);
        // 向缓冲区 放入数据 a b c d
        byteBuffer.put(new byte[]{'a', 'b', 'c', 'd'});
        // byteBuffer 切换到 读模式
        byteBuffer.flip();

        //rewind从头开始阅读
        ByteBuffer byteBuffer1 = byteBuffer.get(new byte[4]);
        log.info("输出结果是：{}", byteBuffer1);


        //get之后指针移动，后面没有东西会报错，需要rewind回到头部
        byteBuffer.rewind();
        System.out.println((char) byteBuffer.get());

        System.out.println("============mark &rewind演示=================");
        //mark reset
        //mark 做一个标记，记录position位置  reset是将 position重置到mark位置
        byteBuffer.rewind();
        System.out.println((char) byteBuffer.get()); //输出a
        System.out.println((char) byteBuffer.get());//输出b
        byteBuffer.mark();  //加标记，在索引2的位置]
        System.out.println((char) byteBuffer.get());
        System.out.println((char) byteBuffer.get());
        byteBuffer.reset();//会到加标记的位置
        System.out.println((char)byteBuffer.get());
        System.out.println((char)byteBuffer.get());


        System.out.println("==========get(int i)============");
        //get
        // position不会改变位置
        System.out.println((char) byteBuffer.get(3));
    }



}
